// starting begin ResetFog ;
   0: CALL_OW 335
// HiddenCamera ( 54 , 16 , 8 ) ;
   4: LD_INT 54
   6: PPUSH
   7: LD_INT 16
   9: PPUSH
  10: LD_INT 8
  12: PPUSH
  13: CALL_OW 244
// HiddenCamera ( 38 , 7 , 8 ) ;
  17: LD_INT 38
  19: PPUSH
  20: LD_INT 7
  22: PPUSH
  23: LD_INT 8
  25: PPUSH
  26: CALL_OW 244
// HiddenCamera ( 60 , 49 , 8 ) ;
  30: LD_INT 60
  32: PPUSH
  33: LD_INT 49
  35: PPUSH
  36: LD_INT 8
  38: PPUSH
  39: CALL_OW 244
// HiddenCamera ( 32 , 45 , 8 ) ;
  43: LD_INT 32
  45: PPUSH
  46: LD_INT 45
  48: PPUSH
  49: LD_INT 8
  51: PPUSH
  52: CALL_OW 244
// HiddenCamera ( 24 , 7 , 8 ) ;
  56: LD_INT 24
  58: PPUSH
  59: LD_INT 7
  61: PPUSH
  62: LD_INT 8
  64: PPUSH
  65: CALL_OW 244
// prepareCharacters ( ) ;
  69: CALL 722 0 0
// end ; end_of_file
  73: END
// export objective ; export function createChar ( name , sex , class_name , importance , skills , face , gallery ) ; begin
  74: LD_INT 0
  76: PPUSH
// if sex =  then
  77: LD_VAR 0 2
  81: PUSH
  82: LD_STRING 
  84: EQUAL
  85: IFFALSE 103
// sex = rand ( 1 , 2 ) ;
  87: LD_ADDR_VAR 0 2
  91: PUSH
  92: LD_INT 1
  94: PPUSH
  95: LD_INT 2
  97: PPUSH
  98: CALL_OW 12
 102: ST_TO_ADDR
// hc_name := name ;
 103: LD_ADDR_OWVAR 26
 107: PUSH
 108: LD_VAR 0 1
 112: ST_TO_ADDR
// hc_sex := sex ;
 113: LD_ADDR_OWVAR 27
 117: PUSH
 118: LD_VAR 0 2
 122: ST_TO_ADDR
// hc_class := class_name ;
 123: LD_ADDR_OWVAR 28
 127: PUSH
 128: LD_VAR 0 3
 132: ST_TO_ADDR
// hc_importance := importance ;
 133: LD_ADDR_OWVAR 32
 137: PUSH
 138: LD_VAR 0 4
 142: ST_TO_ADDR
// hc_basic_skills := skills ;
 143: LD_ADDR_OWVAR 30
 147: PUSH
 148: LD_VAR 0 5
 152: ST_TO_ADDR
// hc_face_number := face ;
 153: LD_ADDR_OWVAR 34
 157: PUSH
 158: LD_VAR 0 6
 162: ST_TO_ADDR
// hc_gallery := gallery ;
 163: LD_ADDR_OWVAR 33
 167: PUSH
 168: LD_VAR 0 7
 172: ST_TO_ADDR
// result := CreateHuman ;
 173: LD_ADDR_VAR 0 8
 177: PUSH
 178: CALL_OW 44
 182: ST_TO_ADDR
// end ;
 183: LD_VAR 0 8
 187: RET
// export function NationSide ( nation , side ) ; begin
 188: LD_INT 0
 190: PPUSH
// uc_nation := nation ;
 191: LD_ADDR_OWVAR 21
 195: PUSH
 196: LD_VAR 0 1
 200: ST_TO_ADDR
// uc_side := side ;
 201: LD_ADDR_OWVAR 20
 205: PUSH
 206: LD_VAR 0 2
 210: ST_TO_ADDR
// end ;
 211: LD_VAR 0 3
 215: RET
// export function getUnits ( side ) ; begin
 216: LD_INT 0
 218: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] ] ) ;
 219: LD_ADDR_VAR 0 2
 223: PUSH
 224: LD_INT 21
 226: PUSH
 227: LD_INT 1
 229: PUSH
 230: EMPTY
 231: LIST
 232: LIST
 233: PUSH
 234: LD_INT 22
 236: PUSH
 237: LD_VAR 0 1
 241: PUSH
 242: EMPTY
 243: LIST
 244: LIST
 245: PUSH
 246: EMPTY
 247: LIST
 248: LIST
 249: PPUSH
 250: CALL_OW 69
 254: ST_TO_ADDR
// end ;
 255: LD_VAR 0 2
 259: RET
// export function getClassUnits ( class_name , side ) ; begin
 260: LD_INT 0
 262: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] , [ f_not , [ f_hasTask ] ] ] ) ;
 263: LD_ADDR_VAR 0 3
 267: PUSH
 268: LD_INT 25
 270: PUSH
 271: LD_VAR 0 1
 275: PUSH
 276: EMPTY
 277: LIST
 278: LIST
 279: PUSH
 280: LD_INT 22
 282: PUSH
 283: LD_VAR 0 2
 287: PUSH
 288: EMPTY
 289: LIST
 290: LIST
 291: PUSH
 292: LD_INT 3
 294: PUSH
 295: LD_INT 60
 297: PUSH
 298: EMPTY
 299: LIST
 300: PUSH
 301: EMPTY
 302: LIST
 303: LIST
 304: PUSH
 305: EMPTY
 306: LIST
 307: LIST
 308: LIST
 309: PPUSH
 310: CALL_OW 69
 314: ST_TO_ADDR
// end ;
 315: LD_VAR 0 3
 319: RET
// export function getBuildings ( building , side ) ; begin
 320: LD_INT 0
 322: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] ] ) ;
 323: LD_ADDR_VAR 0 3
 327: PUSH
 328: LD_INT 30
 330: PUSH
 331: LD_VAR 0 1
 335: PUSH
 336: EMPTY
 337: LIST
 338: LIST
 339: PUSH
 340: LD_INT 22
 342: PUSH
 343: LD_VAR 0 2
 347: PUSH
 348: EMPTY
 349: LIST
 350: LIST
 351: PUSH
 352: EMPTY
 353: LIST
 354: LIST
 355: PPUSH
 356: CALL_OW 69
 360: ST_TO_ADDR
// end ;
 361: LD_VAR 0 3
 365: RET
// export function getEmptyBuildings ( building , side ) ; begin
 366: LD_INT 0
 368: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] , [ f_empty ] ] ) ;
 369: LD_ADDR_VAR 0 3
 373: PUSH
 374: LD_INT 30
 376: PUSH
 377: LD_VAR 0 1
 381: PUSH
 382: EMPTY
 383: LIST
 384: LIST
 385: PUSH
 386: LD_INT 22
 388: PUSH
 389: LD_VAR 0 2
 393: PUSH
 394: EMPTY
 395: LIST
 396: LIST
 397: PUSH
 398: LD_INT 58
 400: PUSH
 401: EMPTY
 402: LIST
 403: PUSH
 404: EMPTY
 405: LIST
 406: LIST
 407: LIST
 408: PPUSH
 409: CALL_OW 69
 413: ST_TO_ADDR
// end ;
 414: LD_VAR 0 3
 418: RET
// export function getVehicles ( side ) ; begin
 419: LD_INT 0
 421: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , side ] ] ) ;
 422: LD_ADDR_VAR 0 2
 426: PUSH
 427: LD_INT 21
 429: PUSH
 430: LD_INT 2
 432: PUSH
 433: EMPTY
 434: LIST
 435: LIST
 436: PUSH
 437: LD_INT 22
 439: PUSH
 440: LD_VAR 0 1
 444: PUSH
 445: EMPTY
 446: LIST
 447: LIST
 448: PUSH
 449: EMPTY
 450: LIST
 451: LIST
 452: PPUSH
 453: CALL_OW 69
 457: ST_TO_ADDR
// end ;
 458: LD_VAR 0 2
 462: RET
// export function getAllBuildings ( side ) ; begin
 463: LD_INT 0
 465: PPUSH
// result := FilterAllUnits ( [ [ f_btype , unit_building ] , [ f_side , side ] ] ) ;
 466: LD_ADDR_VAR 0 2
 470: PUSH
 471: LD_INT 30
 473: PUSH
 474: LD_INT 3
 476: PUSH
 477: EMPTY
 478: LIST
 479: LIST
 480: PUSH
 481: LD_INT 22
 483: PUSH
 484: LD_VAR 0 1
 488: PUSH
 489: EMPTY
 490: LIST
 491: LIST
 492: PUSH
 493: EMPTY
 494: LIST
 495: LIST
 496: PPUSH
 497: CALL_OW 69
 501: ST_TO_ADDR
// end ;
 502: LD_VAR 0 2
 506: RET
// export function SaveVehicles ( vehicles , name ) ; var vehicleComponents , i ; begin
 507: LD_INT 0
 509: PPUSH
 510: PPUSH
 511: PPUSH
// vehicleComponents = [ ] ;
 512: LD_ADDR_VAR 0 4
 516: PUSH
 517: EMPTY
 518: ST_TO_ADDR
// for i in vehicles do
 519: LD_ADDR_VAR 0 5
 523: PUSH
 524: LD_VAR 0 1
 528: PUSH
 529: FOR_IN
 530: IFFALSE 591
// vehicleComponents = vehicleComponents ^ [ getChassis ( i ) , getControl ( i ) , getEngine ( i ) , getWeapon ( i ) ] ;
 532: LD_ADDR_VAR 0 4
 536: PUSH
 537: LD_VAR 0 4
 541: PUSH
 542: LD_VAR 0 5
 546: PPUSH
 547: CALL_OW 265
 551: PUSH
 552: LD_VAR 0 5
 556: PPUSH
 557: CALL_OW 263
 561: PUSH
 562: LD_VAR 0 5
 566: PPUSH
 567: CALL_OW 262
 571: PUSH
 572: LD_VAR 0 5
 576: PPUSH
 577: CALL_OW 264
 581: PUSH
 582: EMPTY
 583: LIST
 584: LIST
 585: LIST
 586: LIST
 587: ADD
 588: ST_TO_ADDR
 589: GO 529
 591: POP
 592: POP
// saveVariable ( vehicleComponents , name ) ;
 593: LD_VAR 0 4
 597: PPUSH
 598: LD_VAR 0 2
 602: PPUSH
 603: CALL_OW 39
// end ;
 607: LD_VAR 0 3
 611: RET
// export function SaveBuildings ( buildings , name ) ; var buildingDetails , i ; begin
 612: LD_INT 0
 614: PPUSH
 615: PPUSH
 616: PPUSH
// buildingDetails = [ ] ;
 617: LD_ADDR_VAR 0 4
 621: PUSH
 622: EMPTY
 623: ST_TO_ADDR
// for i in buildings do
 624: LD_ADDR_VAR 0 5
 628: PUSH
 629: LD_VAR 0 1
 633: PUSH
 634: FOR_IN
 635: IFFALSE 701
// buildingDetails = buildingDetails ^ [ getBType ( i ) , getResources ( getBase ( i ) ) , getX ( i ) , getY ( i ) ] ;
 637: LD_ADDR_VAR 0 4
 641: PUSH
 642: LD_VAR 0 4
 646: PUSH
 647: LD_VAR 0 5
 651: PPUSH
 652: CALL_OW 266
 656: PUSH
 657: LD_VAR 0 5
 661: PPUSH
 662: CALL_OW 274
 666: PPUSH
 667: CALL_OW 279
 671: PUSH
 672: LD_VAR 0 5
 676: PPUSH
 677: CALL_OW 250
 681: PUSH
 682: LD_VAR 0 5
 686: PPUSH
 687: CALL_OW 251
 691: PUSH
 692: EMPTY
 693: LIST
 694: LIST
 695: LIST
 696: LIST
 697: ADD
 698: ST_TO_ADDR
 699: GO 634
 701: POP
 702: POP
// saveVariable ( buildingDetails , name ) ;
 703: LD_VAR 0 4
 707: PPUSH
 708: LD_VAR 0 2
 712: PPUSH
 713: CALL_OW 39
// end ;
 717: LD_VAR 0 3
 721: RET
// export function prepareCharacters ( ) ; var mercenaries , i ; begin
 722: LD_INT 0
 724: PPUSH
 725: PPUSH
 726: PPUSH
// uc_side = 8 ;
 727: LD_ADDR_OWVAR 20
 731: PUSH
 732: LD_INT 8
 734: ST_TO_ADDR
// mercenaries = LoadCharacter ( mercenaries , 0 , 0 ) ;
 735: LD_ADDR_VAR 0 2
 739: PUSH
 740: LD_STRING mercenaries
 742: PPUSH
 743: LD_INT 0
 745: PPUSH
 746: LD_INT 0
 748: PPUSH
 749: CALL_OW 527
 753: ST_TO_ADDR
// for i in mercenaries do
 754: LD_ADDR_VAR 0 3
 758: PUSH
 759: LD_VAR 0 2
 763: PUSH
 764: FOR_IN
 765: IFFALSE 793
// begin PlaceUnitArea ( i , mercenaryArea , false ) ;
 767: LD_VAR 0 3
 771: PPUSH
 772: LD_INT 1
 774: PPUSH
 775: LD_INT 0
 777: PPUSH
 778: CALL_OW 49
// comHold ( i ) ;
 782: LD_VAR 0 3
 786: PPUSH
 787: CALL_OW 140
// end ;
 791: GO 764
 793: POP
 794: POP
// if not getClassUnits ( class_engineer , 8 ) then
 795: LD_INT 2
 797: PPUSH
 798: LD_INT 8
 800: PPUSH
 801: CALL 260 0 2
 805: NOT
 806: IFFALSE 824
// setClass ( mercenaries [ 1 ] , class_engineer ) ;
 808: LD_VAR 0 2
 812: PUSH
 813: LD_INT 1
 815: ARRAY
 816: PPUSH
 817: LD_INT 2
 819: PPUSH
 820: CALL_OW 336
// centerNowOnUnits ( mercenaries [ 1 ] ) ;
 824: LD_VAR 0 2
 828: PUSH
 829: LD_INT 1
 831: ARRAY
 832: PPUSH
 833: CALL_OW 87
// say ( mercenaries [ 1 ] , stash ) ;
 837: LD_VAR 0 2
 841: PUSH
 842: LD_INT 1
 844: ARRAY
 845: PPUSH
 846: LD_STRING stash
 848: PPUSH
 849: CALL_OW 88
// ChangeMissionObjectives ( Startup ) ;
 853: LD_STRING Startup
 855: PPUSH
 856: CALL_OW 337
// end ;
 860: LD_VAR 0 1
 864: RET
// every 0 0$01 trigger getBuildings ( b_depot , 8 ) do
 865: LD_INT 0
 867: PPUSH
 868: LD_INT 8
 870: PPUSH
 871: CALL 320 0 2
 875: IFFALSE 924
 877: GO 879
 879: DISABLE
// begin say ( getUnits ( 8 ) [ 1 ] , checked ) ;
 880: LD_INT 8
 882: PPUSH
 883: CALL 216 0 1
 887: PUSH
 888: LD_INT 1
 890: ARRAY
 891: PPUSH
 892: LD_STRING checked
 894: PPUSH
 895: CALL_OW 88
// ChangeMissionObjectives ( Invest ) ;
 899: LD_STRING Invest
 901: PPUSH
 902: CALL_OW 337
// SetAreaMapShow ( escapeArea , 1 ) ;
 906: LD_INT 2
 908: PPUSH
 909: LD_INT 1
 911: PPUSH
 912: CALL_OW 424
// objective = 1 ;
 916: LD_ADDR_EXP 1
 920: PUSH
 921: LD_INT 1
 923: ST_TO_ADDR
// end ;
 924: END
// every 0 0$01 do var counter , i ;
 925: GO 927
 927: DISABLE
 928: LD_INT 0
 930: PPUSH
 931: PPUSH
// begin counter = 0 ;
 932: LD_ADDR_VAR 0 1
 936: PUSH
 937: LD_INT 0
 939: ST_TO_ADDR
// for i in getUnits ( 8 ) do
 940: LD_ADDR_VAR 0 2
 944: PUSH
 945: LD_INT 8
 947: PPUSH
 948: CALL 216 0 1
 952: PUSH
 953: FOR_IN
 954: IFFALSE 986
// if isInArea ( i , escapeArea ) then
 956: LD_VAR 0 2
 960: PPUSH
 961: LD_INT 2
 963: PPUSH
 964: CALL_OW 308
 968: IFFALSE 984
// counter := counter + 1 ;
 970: LD_ADDR_VAR 0 1
 974: PUSH
 975: LD_VAR 0 1
 979: PUSH
 980: LD_INT 1
 982: PLUS
 983: ST_TO_ADDR
 984: GO 953
 986: POP
 987: POP
// if counter = getUnits ( 8 ) and objective then
 988: LD_VAR 0 1
 992: PUSH
 993: LD_INT 8
 995: PPUSH
 996: CALL 216 0 1
1000: EQUAL
1001: PUSH
1002: LD_EXP 1
1006: AND
1007: IFFALSE 1066
// begin SaveCharacters ( getUnits ( 8 ) , mercenaries ) ;
1009: LD_INT 8
1011: PPUSH
1012: CALL 216 0 1
1016: PPUSH
1017: LD_STRING mercenaries
1019: PPUSH
1020: CALL_OW 38
// SaveVehicles ( getVehicles ( 8 ) , vehicles ) ;
1024: LD_INT 8
1026: PPUSH
1027: CALL 419 0 1
1031: PPUSH
1032: LD_STRING vehicles
1034: PPUSH
1035: CALL 507 0 2
// SaveBuildings ( getAllBuildings ( 8 ) , buildings ) ;
1039: LD_INT 8
1041: PPUSH
1042: CALL 463 0 1
1046: PPUSH
1047: LD_STRING buildings
1049: PPUSH
1050: CALL 612 0 2
// changeMap ( 2 , %_cont ) ;
1054: LD_STRING 2
1056: PPUSH
1057: LD_STRING %_cont
1059: PPUSH
1060: CALL_OW 340
// exit ;
1064: GO 1067
// end ; enable ;
1066: ENABLE
// end ;
1067: PPOPN 2
1069: END
// every 0 0$01 trigger not getUnits ( 8 ) do
1070: LD_INT 8
1072: PPUSH
1073: CALL 216 0 1
1077: NOT
1078: IFFALSE 1090
1080: GO 1082
1082: DISABLE
// YouLost ( units ) ;
1083: LD_STRING units
1085: PPUSH
1086: CALL_OW 104
1090: END
